#include "PromptLineEdit.h"
#include <QPainter>

PromptLineEdit::PromptLineEdit(QWidget *parent)
    : QLineEdit(parent)
{
    setTextMargins(fontMetrics().horizontalAdvance("提示文本：") + 10, 0, 0, 0);
}

void PromptLineEdit::setPromptText(const QString &text) {
    m_prompt = text;
    // 设置左边距（提示文本宽度+10像素间距）
    setTextMargins(fontMetrics().horizontalAdvance(m_prompt) + 10, 0, 0, 0);
    update();
}

void PromptLineEdit::paintEvent(QPaintEvent *event) {
    QLineEdit::paintEvent(event);  // 先绘制一个标准输入框

    if (!m_prompt.isEmpty()) {
        /* 绘制提示文字的内容 */
        QPainter painter(this);
        painter.setPen(m_promptColor);

        QRect rect = contentsRect();
        int vOffset = (rect.height() - fontMetrics().height()) / 2; // 垂直居中

        painter.drawText(rect.adjusted(10, vOffset, 0, 0),
                         Qt::AlignLeft,
                         m_prompt); // 将内容矩形向右移动5px, 向下移动vOffset像素
    }
}
